package main
import "fmt"
/* func main(){
	//功能：给出五个学生的成绩，求出成绩的总和，平均数：
	//定义一个数组
	var scores [5]int
	//录入成绩
	scores[0] = 98
	scores[1] = 55
	scores[2] = 78
	scores[3] = 56
	scores[4] = 93
	//求和
	sum := 0
	for i:= 0;i < len(scores) ;i++{
		sum += scores[i]
	}
	//求平均数
	avg := sum / len(scores)
	//输出
	fmt.Printf("总和为：%v 平均分为：%v",sum,avg)
} */

/* func main(){
	//声明数组
	var arr [3]int //默认为int32
	//获取数组的长度
	fmt.Println(len(arr)) //3
	//打印数组
	fmt.Println(arr) //[0 0 0]
	//证明arr数组中存储的是地址值：
	fmt.Printf("arr的地址为：%p",&arr) //0xc0000aa078
	//arr[0]的地址
	fmt.Printf("arr的地址为：%p",&arr[0])//0xc0000aa078
	//arr[1]的地址
	fmt.Printf("arr的地址为：%p",&arr[1])//0xc0000aa080
	//arr[2]的地址
	fmt.Printf("arr的地址为：%p",&arr[2])//0xc0000aa088
	//赋值
	arr[0] = 10
	arr[1] = 20
	arr[2] = 30
	fmt.Println(arr)
} */

//数组的遍历
//普通for循环
//键值循环 - for range
//for key,value := range coll{
//	...
//}kay下标位置 value具体的值 coll数组名 _忽略值
/* func main(){
	var scores [5]int
	//将成绩存入数组：（循环+终端输入）
	for i := 0; i < len(scores); i++{
		fmt.Printf("请录入第%d个学生的成绩",i+1)
		fmt.Scanln(&scores[i])
	}
	//展示学生成绩 - 遍历数组
	//方式1：for循环
	for i := 0;i < len(scores); i++{
		fmt.Printf("第%d个学生的成绩为:%d\n",i+1,scores[i])
	}
	fmt.Println("----------------------------")
	//方式2：for range
	for key,value:=range scores{
		fmt.Printf("第%d个学生的成绩为：%d\n",key+1,value)
	}
} */

//数组的初始化
/* func main(){
	//1.
	var arr1 [3]int = [3]int{2,3,4}
	fmt.Println(arr1)
	//2.
	var arr2 = [3]int{5,6,7}
	fmt.Println(arr2)
	//3.
	var arr3 = [...]int{1,2,3}
	fmt.Println(arr3)
	//4.
	var arr4 =[...]int{0:12, 3:5}
	fmt.Println(arr4)
} */

//注意事项
//1.长度属于类型的一部分
//2.数组默认值传递
func main(){
	//1.长度属于类型的一部分
	var arr = [6]int{23,56}
	fmt.Printf("arr的类型为：%T\n",arr) //[6]int
	//2.数组默认值传递
	var arr1 = [3]int{1,2,3}
	test(arr1)
	fmt.Println(arr1) // [1 2 3] - 值未被改变
	//3.想在函数中改变数组的值需要使用指针
	var arr2 = [3]int{4,5,6}
	test1(&arr2)
	fmt.Println(arr2) //[77 5 6]
}

func test (arr [3] int) { //无效
   arr[0] = 66
}
func test1 (arr *[3] int){ //有效
	(*arr)[0] = 77
}